{
  "title": "About program",
  "text": "General information:\n\n- Program name: Artillery System\n- Software required for the operation of the program: Windows OS, Windows Command Prompt\n- Programming languages in which the program is written: C++\n\nThe functional purpose of the program\nis to simulate the procedures for managing and directing combat artillery formations.\nThe program behaves correctly if the necessary localization files are included in the release build of the program.\n\nDescription of the logical structure:\nArchitecturally, the program consists of three layers of classes: repositories, services, and interface classes.\n- Repositories are responsible for the direct storage of entities in memory, as well as responsible for working with files.\nThey provide an interface for getting, saving, and deleting objects.\n- Services are responsible for the interaction between entities, and also provide a software interface for performing various actions in the system.\n- Interface classes are directly responsible for user interaction. They provide a user interface.\n\nTechnical means used:\nMinimum requirements\n- A PC with a microprocessor from Intel or AMD with a frequency of at least 1 GHZ\n- RAM of at least 512 MB\n\nCalling and downloading\n- The program takes about 2 mbytes, excluding data files.\n- The input point of the program is artillerySystem.exe\n\nInput and output data:\nThe input and output data are program data files that characterize the objects of the system.\nWith the specified path of the data files, the data is read along the specified path in JSON format, when changing/adding/deleting any object in the program, the new state of the objects is written to the file.\nThe data files are 5 files:\nmissiles.json having the following structure:\n[\n    {\n        \"calibre\": ..,\n        \"flightRange\": ..,\n        \"id\": ..,\n        \"impactArea\": ..,\n        \"length\": ..,\n        \"name\": ..,\n        \"speed\": ..,\n        \"weight\": ..\n    },\n    ..,\n    {\n        \"calibre\": ..,\n        \"flightRange\": ..,\n        \"id\": ..,\n        \"impactArea\": ..,\n        \"length\": ..,\n        \"name\": ..,\n        \"speed\": ..,\n        \"weight\": ..\n    }\n]\nsoldiers.json having the following structure:\n[\n  {\n    \"firstname\": ..,\n    \"id\": ..,\n    \"rank\": ..,\n    \"specialization\": ..,\n    \"surname\": ..\n  },\n  ..\n  {\n    \"firstname\": ..,\n    \"id\": ..,\n    \"rank\": ..,\n    \"specialization\": ..,\n    \"surname\": ..\n  }\n]\nunits.json having the following structure:\n[\n    {\n        \"aimX\": ..,\n        \"aimY\": ..,\n        \"crewId\": ..,\n        \"id\": ..,\n        \"missileId\": ..,\n        \"missilesCount\": ..,\n        \"name\": ..,\n        \"posX\": ..,\n        \"posY\": ..,\n        \"railsCount\": ..,\n        \"requiredSpecializations\": [\n            0,\n\t    ..,\n\t    3\n        ],\n        \"shotsDelay\": ..,\n        \"type\": \"launcher\"\n    },\n    ..\n    {\n        \"aimX\": ..,\n        \"aimY\": ..,\n        \"crewId\": ..,\n        \"id\": ..,\n        \"length\": ..,\n        \"maxSpeed\": ..,\n        \"missileId\": ..,\n        \"missilesCount\": ..,\n        \"name\": ..,\n        \"posX\": ..,\n        \"posY\": ..,\n        \"powerReserve\": ..,\n        \"preparingTime\": ..,\n        \"railsCount\": ..,\n        \"remainingPowerReserve\": ..,\n        \"requiredSpecializations\": [\n            0,\n\t    ..,\n\t    3\n        ],\n        \"shotsDelay\": ..,\n        \"type\": ..,\n        \"weight\": ..,\n        \"width\": ..\n    }\n]\nbattalions.json having the following structure:\n[\n    {\n        \"id\": ..,\n        \"name\": ..,\n        \"unitsIds\": [..]\n    },\n    ..\n    {\n        \"id\": ..,\n        \"name\": ..,\n        \"unitsIds\": [..]\n    }\n]\ncrews.json having the following structure:\n[\n    {\n        \"id\": ..,\n        \"soldiersIds\": [..]\n    },\n    {\n        \"id\": ..,\n        \"soldiersIds\": [..]\n    }\n]\n"
}